package chapter07

import scala.collection.mutable.ArrayBuffer

/**
 * Created with IntelliJ IDEA.
 * ClassName: Test04_Arr
 * Package: chapter07
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 *          Date: 2023-07-05
 *          Time: 21:34
 */

//可变数组
object Test04_Arr {
  def main(args: Array[String]): Unit = {
    //定义可变数组 ArrayBuffer 要引入scala.collection.mutable.ArrayBuffer
    //不给值 默认大小 16
    val arr1: ArrayBuffer[Int] = new ArrayBuffer[Int]()

    //伴生对象创建
    val arr2 = ArrayBuffer(12,34,45,65)

    println(arr2.mkString(","))

    println(arr2) //ArrayBuffer(12, 34, 45, 65)
    //不可变数组 这样输出的就是引用地址 不可变数组 继承的是java.io

    //添加元素 末尾追加
    //虽然是可变数组 但是这样的方式添加 也会生成一个新的数组
    val newArr1 = arr2 :+ 100
    println(newArr1)

    arr1 += 19 //也是返回一个新的数组 只是两个引用指向同样一个数组

    //方法追加
    //末尾追加
    arr1.append(12)
    //开头追加
    arr1.prepend(100)
    println(arr1)

    //删除元素
    //删除指定下标的元素
    arr1.remove(2)
    //从某个下标开始删除 连续删除的个数
    arr2.remove(2,1)
    //按照元素进行删除

    arr2 -= 65 //找到此元素就删除 没找到 就什么都不做
    println(arr2)


    val arr4 = ArrayBuffer(1,2,3)
    //可变数组转为不可变数据
    val arr5 = arr4.toArray
    println(arr5) //不可变数组直接输出就是引用地址

    //不可变数组转为可变数组
    val arr6 = arr5.toBuffer
    println(arr6)


  }
}
